#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <fcntl.h>

int fd; // 全局文件描述符

void sigHandler(int signalNum)
{
    char buf[50];
    int len = snprintf(buf, sizeof(buf), "Received signal: %d\n", signalNum);
    write(fd, buf, len);        // 使用 write 保证信号安全
    signal(SIGINT, sigHandler); // 重新注册
}

int main()
{
    // 自动创建日志文件并写入初始内容
    fd = open("siglog.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
    write(fd, "=== Signal Log Start ===\n", 24);

    signal(SIGINT, sigHandler);
    signal(SIGQUIT, SIG_IGN);

    while (1)
    {
        sleep(1);
        write(fd, "Waiting...\n", 11); // 定期写入状态
    }
    close(fd);
    return 0;
}